var fileExtensions = [];
var fileids = [];
var saveData = {};
jQuery(document).ready(function () {
    //页面初始化
    formInit();
    //事件注册
    eventInit();
});

//初始化
function formInit() {
    checkEvents();//表单正则校验
    getAgents();
    //保存
    $("#edit_yes").on("click", function () {
        form.on('submit(save_user)', function (data) {
            var param = getFormData("#user-form");
            param.agentcode = $.trim($("select[name=agentcode]").val());
            param.password = $.trim($("input[name=password]").val());
            $.hcPostAjax({
                showLoad: true,
                msgPrefix: "出错",
                url: basePath + '/wQyUser/addOrUpdate',
                data: param,
                success: function (data) {
                    layer.msg('成功', {
                        icon: 1, time: 1500
                    }, function () {
                        window.open(basePath,'_self');
                    });
                }
            });
        });
    });
    //取消修改
    $("#edit_cancle").on("click", function () {
        window.open(basePath,'_self');
    });
}

//加载事件
function eventInit() {
    //加载允许上传的文件类型，后缀
    loadAllFileExtensions();

    //clientFileinput('#clientFile','11');//11 客户附件
    //clientFileinput('#clientZGZSFile','13');//13 《中国民用航空运输销售代理业务资格认可证书》加盖公章的复印件
    clientFileinput('#clientYYZZFile', '14');//14 《营业执照或企业法人工商营业执照》加盖公章的复印件
    //clientFileinput('#clientDLXYFile','15');//15 航空公司销售代理协议加盖公章的复印件
    clientFileinput('#clientFRFile', '16');//16 公司法人（负责人）身份证明加盖公章的复印件（身份证正反两面）
    //clientFileinput('#clientWXPDGFile','17');//17 航空公司认可的《危险品培训大纲》加盖公章的复印件
    //clientFileinput('#clientWXPZSFile','18');//18 危险品航空运输培训证书（满足《CCAR-276-R1》的培训要求）加盖公章的复印件
    clientFileinput('#clientJSXFile', '19');//19 销售代理人对交货员出具的公司介绍信及交货员身份证明加盖公章的复印件
    //clientFileinput('#clientQRHFile','20');//20 航空公司对代理人的交运货物确认函
    clientFileinput('#clientWTSFile', '21');//21 授权委托书（如存在委托行为）
    clientFileinput('#clientYJXYFile', '22');//22 有关本年签署操作费月结协议的申请

    //勾选承诺书
    $("#promise").on("click", function () {
        if ($(this).is(":checked") == true) {
            $("#yes_submit").attr("disabled", false);
        } else {
            $("#yes_submit").attr("disabled", true);
        }
    });

    //提交申请
    $("#yes_submit").on("click", function () {
        form.on('submit(yes_submit)', function (data) { //校验必填项
            $("#yes_submit").attr("disabled", true);
            saveData = getFormDataById('.layui-form');
            saveData.password = $.trim($("#password").val());
            saveData.confirmWord = $.trim($("#confirmWord").val());
            if (isEmpty($('#clientYYZZFile').val())) {
                alertMsg('请上传《营业执照或企业法人工商营业执照》加盖公章的扫描件！');
                $("#yes_submit").attr("disabled", false);
                return false;
            } else if (isEmpty($('#clientFRFile').val())) {
                alertMsg('请上传公司法人身份证明加盖公章的扫描件！');
                $("#yes_submit").attr("disabled", false);
                return false;
            }
            //校验数据
            if (checkClientData(saveData)) {
                layer.msg('保存中...', {
                    time: '-1'
                });
                //依次上传附件，最后保存主体内容
                inputClientYYZZFile();
            } else {
                $("#yes_submit").attr("disabled", false);
            }
        });
    });

    //返回
    $("#cancel_back").on("click", function () {
        window.close();
    });

    //查看营业执照模板
    $("#clientYYZZModel").on('click', function () {
        window.open(basePath + "/assets/clientmodel/clientYYZZModel.pdf");
    });
    //查看法人身份证明模板
    $("#clientFRModel").on('click', function () {
        window.open(basePath + "/assets/clientmodel/clientFRModel.pdf");
    });
    //查看委托书模板
    $("#clientWTSModel").on('click', function () {
        window.open(basePath + "/assets/clientmodel/clientWTSModel.pdf");
    });
    //查看介绍信及交货员证模板
    $("#clientJSXModel").on('click', function () {
        window.open(basePath + "/assets/clientmodel/clientJSXModel.pdf");
    });
    //查看月结协议模板
    $("#clientYJXYModel").on('click', function () {
        window.open(basePath + "/assets/clientmodel/clientYJXYModel.pdf");
    });
}

//验证税号 15或者17或者18或者20位字母、数字组成
function checkTax(obj) {
    if (/^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/.test(obj)) {
        return true;
    }
}

//校验银行卡号，暂时只校验数字
function checkBankno(obj) {
    if (/^\d*$/.test(obj)) {
        return true;
    }
}

//校验电话和手机
function checkTeleAndMobile(obj) {
    /*if (!new RegExp(/^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/).test(obj) &&
        !new RegExp(/^1(3|4|5|6|7|8|9)\d{9}$/).test(obj)) {
        return true;
    }*/
    if (!new RegExp(/^[\d-]+$/).test(obj)) {
        return true;
    }
}

//校验电话
function checkTele(obj) {
    /*if (!new RegExp(/^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/).test(obj)) {
        return true;
    }*/
    if (!new RegExp(/^[\d-]+$/).test(obj)) {
        return true;
    }
}

//校验手机号
function checkMobile(obj) {
    if (!new RegExp(/^1(3|4|5|6|7|8|9)\d{9}$/).test(obj)) {
        return true;
    }
}

//校验用户名
function checkUserid(obj) {
    if (!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(obj)) {
        $('#userid').val('');
        alertMsg('登陆账号不能有特殊字符');
    }
    if (/(^\_)|(\__)|(\_+$)/.test(obj)) {
        $('#userid').val('');
        alertMsg('登陆账号首尾不能出现下划线\'_\'');
    }
    if (/^\d+\d+\d$/.test(obj)) {
        $('#userid').val('');
        alertMsg('登陆账号不能全为数字');
    }
    if (/[\u4e00-\u9fa5]/.test(obj)) {
        $('#userid').val('');
        alertMsg('登陆账号不能存在中文');
    }
}

//校验密码
function checkPassword(obj) {
    if (!new RegExp(/^.*(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?![.\n])(?!.*\s)^.{8,20}$/).test(obj)) {
        $('#password').val('');
        alertMsg('密码大于8位小于20位，必须包含大小写字母和数字');
    }
}

//加载允许上传的文件类型，后缀jpg、png等
function loadAllFileExtensions() {
    $.hcPostAjax({
        url: `${basePath}/clientRegistration/getByFatherCode`,
        type: 'get',
        async: false,
        data: {
            'fatherCode': 'CHAR_FILEEXTENSIONS'
        },
        success: function (json) {
            fileExtensions = [];
            $.each(json, function (i) {
                fileExtensions.push(json[i].codeValue);
            })
        }
    });
}

//保存客户主体内容，并更新附件表cid
function save(fileids) {
    if (isNotEmpty(fileids)) {
        saveData.clientAppendIds = reRepeat(fileids).join(',');
    }
    $.hcPostAjax({
        url: basePath + '/clientRegistration/addRegistration',
        type: 'post',
        dataType: 'json',
        data: saveData,
        success: function (data) {
            layer.msg('保存成功！', {
                icon: 1,
                time: 1500
            }, function () {
                parent.layer.closeAll();
                window.close();
            });
        }
    });
}

//数组去重
function reRepeat(arr) {
    let obj = {};
    let newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (!obj[arr[i]]) {
            obj[arr[i]] = 1;
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

//校验客户数据
function checkClientData(data) {
    let clientResult = false;
    $.hcPostAjax({
        url: basePath + '/clientRegistration/checkClientData',
        type: 'post',
        dataType: 'json',
        async: false,
        data: data,
        success: function (data) {
            clientResult = true;
        }
    });
    return clientResult;
}

//上传初始化
function clientFileinput(selector, type) {
    $(selector).fileinput({
        language: 'zh',
        uploadUrl: basePath + "/clientRegistration/uploadFile",
        dataType: 'text/json,charset=utf-8',
        browseClass: "btn btn-primary", //按钮样式
        allowedFileExtensions: fileExtensions,
        uploadAsync: false,//同步
        overwriteInitial: false,
        showCancel: false,
        maxFileSize: 700,
        maxFileCount: 5,
        dropZoneEnabled: false,//不允许拖拽
        layoutTemplates: {
            actionUpload: ''
        },
        uploadExtraData: function (previewId, index) {   //额外参数的关键点
            let obj = {
                'type': type //附件类型
            };
            return obj;
        }
    });
}

//《营业执照或企业法人工商营业执照》加盖公章的复印件
function inputClientYYZZFile() {
    fileids = [];//初始化
    let lockYYZZ = false;//默认未锁定
    if (!isEmpty($('#clientYYZZFile').val())) {
        $("#clientYYZZFile").fileinput("upload").on("filebatchuploadsuccess", function (e, data) {
            if (!lockYYZZ) {
                lockYYZZ = true;//锁定，防止触发多次提交
                let result = data.response;
                if (result.code !== null && result.code === 'ok') {
                    if (fileids) {
                        fileids = result.data.concat(fileids);
                    } else {
                        fileids = result.data;
                    }
                    inputClientFRFile();
                } else {
                    showAjaxErrorMsg("上传《营业执照或企业法人工商营业执照》原件的扫描件失败！" + result.msg, function () {
                        $("#clientYYZZFile").fileinput('clear');
                        $("#yes_submit").attr("disabled", false);
                    });
                }
            }
        }).on('fileerror', function (event, data, msg) {
            showAjaxErrorMsg('上传《营业执照或企业法人工商营业执照》原件的扫描件失败！', function () {
                $("#clientYYZZFile").fileinput('clear');
                $("#yes_submit").attr("disabled", false);
            });
        });
    } else {
        inputClientFRFile();
    }
}

//公司法人（负责人）身份证明加盖公章的复印件（身份证正反两面）
function inputClientFRFile() {
    let lockFR = false;//默认未锁定
    if (!isEmpty($('#clientFRFile').val())) {
        $("#clientFRFile").fileinput("upload").on("filebatchuploadsuccess", function (e, data) {
            if (!lockFR) {
                lockFR = true;//锁定，防止触发多次提交
                let result = data.response;
                if (result.code !== null && result.code === 'ok') {
                    if (fileids) {
                        fileids = result.data.concat(fileids);
                    } else {
                        fileids = result.data;
                    }
                    inputClientWTSFile();
                } else {
                    showAjaxErrorMsg("上传公司法人（负责人）身份证明原件的扫描件失败！" + result.msg, function () {
                        $("#clientFRFile").fileinput('clear');
                        $("#clientYYZZFile").fileinput('clear');
                        $("#yes_submit").attr("disabled", false);
                    });
                }
            }
        }).on('fileerror', function (event, data, msg) {
            showAjaxErrorMsg('上传公司法人（负责人）身份证明原件的扫描件失败！', function () {
                $("#clientFRFile").fileinput('clear');
                $("#clientYYZZFile").fileinput('clear');
                $("#yes_submit").attr("disabled", false);
            });
        });
    } else {
        inputClientWTSFile();
    }
}

//授权委托书（如存在委托行为）
function inputClientWTSFile() {
    let lockWTS = false;//默认未锁定
    if (!isEmpty($('#clientWTSFile').val())) {
        $("#clientWTSFile").fileinput("upload").on("filebatchuploadsuccess", function (e, data) {
            if (!lockWTS) {
                lockWTS = true;//锁定，防止触发多次提交
                let result = data.response;
                if (result.code !== null && result.code === 'ok') {
                    if (fileids) {
                        fileids = result.data.concat(fileids);
                    } else {
                        fileids = result.data;
                    }
                    inputClientJSXFile();
                } else {
                    showAjaxErrorMsg("上传授权委托书加盖公章的扫描件失败！" + result.msg, function () {
                        $("#clientWTSFile").fileinput('clear');
                        $("#clientFRFile").fileinput('clear');
                        $("#clientYYZZFile").fileinput('clear');
                        $("#yes_submit").attr("disabled", false);
                    });
                }
            }
        }).on('fileerror', function (event, data, msg) {
            showAjaxErrorMsg('上传授权委托书加盖公章的扫描件失败！', function () {
                $("#clientWTSFile").fileinput('clear');
                $("#clientFRFile").fileinput('clear');
                $("#clientYYZZFile").fileinput('clear');
                $("#yes_submit").attr("disabled", false);
            });
        });
    } else {
        inputClientJSXFile();
    }
}

//销售代理人对交货员出具的公司介绍信及交货员身份证明加盖公章的复印件
function inputClientJSXFile() {
    let lockJSX = false;//默认未锁定
    if (!isEmpty($('#clientJSXFile').val())) {
        $("#clientJSXFile").fileinput("upload").on("filebatchuploadsuccess", function (e, data) {
            if (!lockJSX) {
                lockJSX = true;//锁定，防止触发多次提交
                let result = data.response;
                if (result.code !== null && result.code === 'ok') {
                    if (fileids) {
                        fileids = result.data.concat(fileids);
                    } else {
                        fileids = result.data;
                    }
                    inputClientYJXYFile();
                } else {
                    showAjaxErrorMsg("上传销售代理人对交货员出具的公司介绍信及交货员身份证明加盖公章的扫描件失败！" + result.msg, function () {
                        $("#clientJSXFile").fileinput('clear');
                        $("#clientWTSFile").fileinput('clear');
                        $("#clientFRFile").fileinput('clear');
                        $("#clientYYZZFile").fileinput('clear');
                        $("#yes_submit").attr("disabled", false);
                    });
                }
            }
        }).on('fileerror', function (event, data, msg) {
            showAjaxErrorMsg('上传销售代理人对交货员出具的公司介绍信及交货员身份证明加盖公章的扫描件失败！', function () {
                $("#clientJSXFile").fileinput('clear');
                $("#clientWTSFile").fileinput('clear');
                $("#clientFRFile").fileinput('clear');
                $("#clientYYZZFile").fileinput('clear');
                $("#yes_submit").attr("disabled", false);
            });
        });
    } else {
        inputClientYJXYFile();
    }
}

//有关本年签署操作费月结协议的申请
function inputClientYJXYFile() {
    let lockYJXY = false;//默认未锁定
    if (!isEmpty($('#clientYJXYFile').val())) {
        $("#clientYJXYFile").fileinput("upload").on("filebatchuploadsuccess", function (e, data) {
            if (!lockYJXY) {
                lockYJXY = true;//锁定，防止触发多次提交
                let result = data.response;
                if (result.code !== null && result.code === 'ok') {
                    if (fileids) {
                        fileids = result.data.concat(fileids);
                    } else {
                        fileids = result.data;
                    }
                    //保存主体内容
                    save(fileids);
                } else {
                    showAjaxErrorMsg("上传有关本年签署操作费月结协议的申请失败！" + result.msg, function () {
                        $("#clientYJXYFile").fileinput('clear');
                        $("#clientJSXFile").fileinput('clear');
                        $("#clientWTSFile").fileinput('clear');
                        $("#clientFRFile").fileinput('clear');
                        $("#clientYYZZFile").fileinput('clear');
                        $("#yes_submit").attr("disabled", false);
                    });
                }
            }
        }).on('fileerror', function (event, data, msg) {
            showAjaxErrorMsg('上传有关本年签署操作费月结协议的申请失败！', function () {
                $("#clientYJXYFile").fileinput('clear');
                $("#clientJSXFile").fileinput('clear');
                $("#clientWTSFile").fileinput('clear');
                $("#clientFRFile").fileinput('clear');
                $("#clientYYZZFile").fileinput('clear');
                $("#yes_submit").attr("disabled", false);
            });
        });
    } else {
        //保存主体内容
        save(fileids);
    }
}

function checkEvents() {
    // form 表单校验
    form.verify({
        username: function (value, item) { // value：表单的值、item：表单的DOM对象
            if (!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)) {
                return '用户名不能有特殊字符';
            }
            if (/(^\_)|(\__)|(\_+$)/.test(value)) {
                return '用户名首尾不能出现下划线\'_\'';
            }
            if (/^\d+\d+\d$/.test(value)) {
                return '用户名不能全为数字';
            }
        },
        // 我们既支持上述函数式的方式，也支持下述数组的形式
        // 数组的两个值分别代表：[正则匹配、匹配不符时的提示文字]
        /*password: [
            /^[\S]{6,12}$/
            ,'密码必须6到12位，且不能出现空格'
        ]*/
        password: [
            /^.*(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?![.\n])(?!.*\s)^.{8,20}$/
            , '密码大于8位小于20位，必须包含大小写字母和数字'
        ]
    });
}

/**
 *加载货代
 */
function getAgents() {
    $.ajax({
        async: false,
        type: "post",
        url: basePath + "/hcDicAgent/list",
        data: {
            pagenation: false,
            activestatus: '1'
        },
        success: function (data) {
            var Agents = [];
            for (var i = 0; i < data.data.length; i++) {
                Agents.push({
                    id: data.data[i].agentcode + "",
                    text: data.data[i].agentcode + "/" + data.data[i].namecn
                });
            }
            //选择货代
            $("select[name=agentcode]").val('').select2({
                placeholder: "请选择货代",
                data: Agents,
                multiple: true,
                allowClear: false,
                width: '100%'
            });
        }
    });
}


